﻿/****************************************************************************************
* 文件名：MENU.H
* 功能：菜单显示及操作，头文件。
* 作者：黄绍斌
* 日期：2004.02.26
* 备注：
****************************************************************************************/
#ifndef  MENU_H
#define  MENU_H


/* 定义主菜单宽度，及最大菜单个数 */
#define  MMENU_WIDTH				34
#define  MMENU_NO					6


/* 定义菜单的宽度(下拉菜单)，及最大子菜单个数 */
#define  SMENU_WIDTH				66
#define  SMENU_NO					8


/* 定义一子菜单项的数据结构 */
typedef  struct
{  WINDOWS  *win;					// 所属窗口
   uint8    mmenu_no;				// 对应的主菜单项号(0-n)
   
   uint8    no;						// 子菜单项个数
   char     *str[SMENU_NO];			// 子菜单字符串
   uint8    state;  				// 所选择的子菜单
   
   void     (*Function[SMENU_NO])(void);		// 子菜单对应的服务程序
} SMENU;

/* 主菜单数据结构 */
typedef  struct
{  WINDOWS  *win;					// 所属窗口

   uint8    no;						// 主菜单个数
   char  	*str[MMENU_NO];			// 主菜单字符串
} MMENU;


/* 定义图标菜单数据结构 */
typedef  struct
{  uint32 x;			// 图标菜单位置(左上角的x坐标)
   uint32 y;			// 图标菜单位置(左上角的y坐标) 
   uint8  *icodat;		// 32*32的ICO数据地址
   uint8  *title;       // 相关标题提示 (42*13)
   uint8  state;  		// 图标菜单状态，为0时表示未选中，为1时表示已选中
   
   void   (*Function)(void);	// 对应的服务程序
} MENUICO;


/****************************************************************************
* 名称：GUI_MMenuDraw()
* 功能：显示主菜单，加上边框。
* 入口参数：men		主菜单句柄
* 出口参数：返回0表示操作失败，返回1表示操作成功
****************************************************************************/
extern  uint8  GUI_MMenuDraw(MMENU *men);


/****************************************************************************
* 名称：GUI_MMenuSelect()
* 功能：当前主菜单，加下划线，表示当前主菜单。
* 入口参数：men		主菜单句柄
*          no		所选的主菜单项
* 出口参数：无
****************************************************************************/
extern  void  GUI_MMenuSelect(MMENU *men, uint8 no);


/****************************************************************************
* 名称：GUI_MMenuNSelect()
* 功能：取消当前主菜单，去除下划线。
* 入口参数：men		主菜单句柄
*          no		所选的主菜单项
* 出口参数：无
****************************************************************************/
extern  void  GUI_MMenuNSelect(MMENU *men, uint8 no);



/****************************************************************************
* 名称：GUI_SMenuDraw()
* 功能：显示子菜单，加上边框。
* 入口参数：men		菜单句柄
* 出口参数：返回0表示操作失败，返回1表示操作成功
****************************************************************************/
extern  uint8  GUI_SMenuDraw(SMENU *men);


/****************************************************************************
* 名称：GUI_SMenuSelect()
* 功能：选择新的子菜单。
* 入口参数：men		子菜单句柄
*          old_no	原先选择的子菜单项
*		   new_no	现要选择的子菜单项
* 出口参数：无
****************************************************************************/
extern  void  GUI_SMenuSelect(SMENU *men, uint8 old_no, uint8 new_no);


/****************************************************************************
* 名称：GUI_SMenuHide()
* 功能：消隐子菜单项。
* 入口参数：men		子菜单句柄
* 出口参数：返回0表示操作失败，返回1表示操作成功
****************************************************************************/
extern  uint8  GUI_SMenuHide(SMENU *men);



/****************************************************************************
* 名称：GUI_Button49x14()
* 功能：显示49*14按钮。
* 入口参数： x		指定显示位置，x坐标
*           y		指定显示位置，y坐标
*           dat		显示的数据地址
* 出口参数：返回0表示操作失败，返回1表示操作成功
****************************************************************************/
extern  void  GUI_Button49x14(uint32 x, uint32 y, uint8 *dat);



/****************************************************************************
* 名称：GUI_Button_OK()
* 功能：显示49*14按钮"OK"。
* 入口参数： x		指定显示位置，x坐标
*           y		指定显示位置，y坐标
* 出口参数：返回0表示操作失败，返回1表示操作成功
****************************************************************************/
extern  void  GUI_Button_OK(uint32 x, uint32 y);



/****************************************************************************
* 名称：GUI_Button_OK1()
* 功能：显示49*14按钮，选择状态的"OK"。
* 入口参数： x		指定显示位置，x坐标
*           y		指定显示位置，y坐标
* 出口参数：返回0表示操作失败，返回1表示操作成功
****************************************************************************/
extern  void  GUI_Button_OK1(uint32 x, uint32 y);


/****************************************************************************
* 名称：GUI_Button_Cancle()
* 功能：显示49*14按钮"Cancle"。
* 入口参数： x		指定显示位置，x坐标
*           y		指定显示位置，y坐标
* 出口参数：返回0表示操作失败，返回1表示操作成功
****************************************************************************/
extern  void  GUI_Button_Cancle(uint32 x, uint32 y);



/****************************************************************************
* 名称：GUI_Button_Cancle1()
* 功能：显示49*14按钮，选择状态的"Cancle"。
* 入口参数： x		指定显示位置，x坐标
*           y		指定显示位置，y坐标
* 出口参数：返回0表示操作失败，返回1表示操作成功
****************************************************************************/
extern  void  GUI_Button_Cancle1(uint32 x, uint32 y);


/****************************************************************************
* 名称：GUI_MenuIcoDraw()
* 功能：显示图标菜单。
* 入口参数：ico		图标菜单句柄
* 出口参数：返回0表示操作失败，返回1表示操作成功
****************************************************************************/
extern  uint8  GUI_MenuIcoDraw(MENUICO *ico);



#endif



